﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using ImobitechModel.com.Controller;
using System.Text;
using ImobitechModel.com.Constantes;

namespace Imobitech.Gestao
{
    public partial class EditarImovel : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ControladorImovel controladorImovel = new ControladorImovel();
                rptDependencias.DataSource = (IDictionary<string, string>)controladorImovel.retornaDependencias();
                rptDependencias.DataBind();

                carregarddlTipoImovel();
                int id = Request.QueryString["id"] != null ? int.Parse(Request.QueryString["id"].ToString()) : 0;

                carregaImovel(id);
            }
        }

        private void carregaImovel(int id)
        {
            ControladorGestao cg = new ControladorGestao();
            ImobitechModel.com.Constantes.Imoveis imovel = (ImobitechModel.com.Constantes.Imoveis)cg.buscaImovel(id);
            txtEndereco.Text = imovel.endereco;
            txtComplemento.Text = imovel.complemento;
            txtReferencia.Text = imovel.referencia;
            txtBairro.Text = imovel.bairro;
            txtCidade.Text = imovel.cidade;
            txtEstado.Text = imovel.estado;
            txtAreaTotal.Text = imovel.areaTotal.ToString();
            txtAreaPrivada.Text = imovel.areaPrivada.ToString();
            txtQuartos.Text = imovel.quartos.ToString();
            txtSuite.Checked = imovel.existeSuite;
            txtQuartosSuites.Text = imovel.existeSuite ? imovel.suite.ToString() : "";
            txtGaragem.Checked = imovel.existeGaragem;
            txtNumeroGaragem.Text = imovel.existeGaragem ? imovel.garagem.ToString() : "";
            ddlTipoImovel.SelectedValue = imovel.tipoImovel.ToString();
            hdfId.Value = id.ToString();

            foreach (RepeaterItem i in rptDependencias.Items)
            {
                CheckBox cb = (CheckBox)i.FindControl("CheckBoxDependencia");
                HiddenField hdfDepedencias = (HiddenField)i.FindControl("CheckBoxDependenciaValue");
                if (imovel.dependencias.Where(p => p.id == int.Parse(hdfDepedencias.Value)).Count() > 0)
                {
                    cb.Checked = true;
                }
            }
        }

        private void carregarddlTipoImovel()
        {
            ControladorImovel cg = new ControladorImovel();
            ddlTipoImovel.DataSource = (Dictionary<int, string>)cg.retornaTipoImovel();
            ddlTipoImovel.DataTextField = "Value";
            ddlTipoImovel.DataValueField = "key";
            ddlTipoImovel.DataBind();
        }

        protected void btnCadastrar_Click(object sender, EventArgs e)
        {
            IDictionary<string, string> imovel = new Dictionary<string, string>();

            imovel.Add(NomeCampoConstantes.campo_ImovelBairro, txtBairro.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelCidade, txtCidade.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelEndereco, txtEndereco.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelComplemento, txtComplemento.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelReferencia, txtReferencia.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelQuartos, txtQuartos.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelExisteSuite, txtSuite.Checked.ToString());
            imovel.Add(NomeCampoConstantes.campo_ImovelQuartosSuite, txtQuartosSuites.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelExisteGaragem, txtGaragem.Checked.ToString());
            imovel.Add(NomeCampoConstantes.campo_ImovelNumeroGaragem, txtNumeroGaragem.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelAreaTotal, txtAreaTotal.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelAreaPrivada, txtAreaPrivada.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelEstado, txtEstado.Text);
            imovel.Add(NomeCampoConstantes.campo_ImovelTipoImovel, ddlTipoImovel.SelectedValue);
            imovel.Add(NomeCampoConstantes.campo_ImovelId, hdfId.Value);
                       

            StringBuilder idDepedencias = new StringBuilder();
            foreach (RepeaterItem i in rptDependencias.Items)
            {
                CheckBox cb = (CheckBox)i.FindControl("CheckBoxDependencia");
                if (cb.Checked)
                {
                    HiddenField hdfDepedencias = (HiddenField)i.FindControl("CheckBoxDependenciaValue");
                    idDepedencias.AppendFormat(@"{0},", hdfDepedencias.Value);
                }
            }

            imovel.Add(NomeCampoConstantes.campo_dependencias, idDepedencias.ToString());
            ControladorImovel cg = new ControladorImovel();
            int idImovel = (int)cg.editarImovel(imovel);
        }
    }
}